package material;

/**
 * La classe Material est le point d'acces aux differentes ressources du metronome pour le reste de l'application.
 * C'est a partir de ce singleton qu'on peut recuperer l'horloge, le clavier, la molette, l'emetteur sonore ainsi que l'afficheur.
 */
public class Material {

	private static Material materielInstance;	// Le singleton Materiel
	
	private Clock clock;						// L'horloge du metronome
	private Keyboard keyboard;					// Le clavier du metronome
	private Wheel wheel;						// La molette du metronome
	private SoundEmitter soundEmitter;			// L'emetteur sonore du metronome
	private Displayer displayer;				// L'afficheur du metronome
	
	public static Material MaterialInstance() {
		if(materielInstance == null) {
			materielInstance = new Material();
		}
		
		return materielInstance;	
	}
	
	private Material() {
		// Creation, si le singleton n'existe pas deja, des differentes ressources du metronome
		clock = new ClockImpl();
		keyboard = new KeyboardImpl();
		wheel = new WheelImpl();
		soundEmitter = new SoundEmitterImpl();
		displayer = new DisplayerImpl();
	}
	
	public Clock getClock() {
		return clock;
	}
	
	public Keyboard getKeyboard() {
		return keyboard;
	}
	
	public Wheel getWheel() {
		return wheel;
	}
	
	public SoundEmitter getSoundEmitter() {
		return soundEmitter;
	}
	
	public Displayer getDisplayer() {
		return displayer;
	}
	
}
